This invention relates to computer operating systems. More particularly, this invention relates to operating systems and methods that handle power state change requests submitted by peripheral devices.
Conventional operating systems are designed to manage peripheral devices such as memory drives, monitors, printers, scanners, and so forth. Originally, the peripheral devices were designed to perform only the most rudimentary tasks, while all higher level management was left to the operating system (OS). The peripheral devices were not designed to handle such tasks as power management, allocation of local resources, diagnostics, and so on. Instead, the devices relied almost entirely on the operating system for higher level management and operating decisions.
Over time, the peripheral devices became increasingly more intelligent. Today, many peripheral devices have local controllers and processors to manage internal operation independent of the operating system. It is not uncommon for peripheral devices to perform such tasks as managing their own power consumption, running their own diagnostics, analyzing their current operating efficiency and determining whether improvements can or should be made. The device manufactures tailor the local management controllers to the specific attributes of the device. As a result, the localized controllers are often better at managing the device than the operating system, which tends to be designed more generically across many device platforms.
One area of particular interest is power management. Device manufacturers have developed highly accurate heuristics for managing power consumption within their products. The local controllers implement these product-specific heuristics and tend to ignore power instructions from the operating system, often resulting in better power management.
Unfortunately, localized power management causes a problem in that the operating system may not be aware of the device""s current power state. As an example, conventional storage devices have a local power manager that powers down the device to a sleep mode after a specified period of inactivity. The operating system, however, is left unaware of this power state transition. Accordingly, the operating system may still presume that the device is in a ready mode.
The operating system might alternatively attempt to poll the device to see if the storage device is ready and available, or the operating system might attempt to write some cached data to the medium. If the device is currently awake, it can reply to the request or accommodate the cached data. However, if the device is currently asleep (unbeknownst to the operating system), the status request or write operation initiated by the operating system causes the device to wake up before the request can be answered or the write operation performed. This can happen repeatedly if the device continues to power down on its own between each OS-initiated status request or write operation.
As a result, the operating system actually thwarts the local controller""s efforts to minimize power consumption by routinely causing the device to change power states. Had the operating system known that the device was asleep, it would not need to send the status request or it would first wake up the device before trying to write cached data.
The inventor has developed an OS-based method for managing power state transitions of intelligent peripheral devices.
This invention concerns a computer operating system that is designed to manage intelligent peripheral devices having local power management. The operating system is coupled to the peripheral devices via a bus architecture that supports unsolicited status requests from peripheral devices. One particular bus architecture is a high performance serial bus constructed according to the IEEE 1394 specification.
When the local power management decides to change power states, the local power management initiates an unsolicited power change request indicating a new power level. The peripheral bus carries the unsolicited power change request to the operating system. Upon receipt of the unsolicited power change request, the operating system issues a power change request directing the peripheral device to perform the power state transition. In this manner, the operating system remains aware of the peripheral device""s power state and in fact, acts as if it is controlling the device""s power state transitions.